Use of computer networks is ubiquitous in today's computing environments. Networks are employed for a wide range of computer uses, such as receiving and responding to e-mail, browsing the Web, updating a Facebook status, viewing an on-line video, making an on-line purchase and placing a VoIP call. With the rapid growth of so called “cloud-based” services, network utilization is forecast to continue being ever more important.
Networking is facilitated by various types of equipment including routers, switches, bridges, gateways, and access points. Large network infrastructure typically includes use of telecommunication-class network elements, including switches and routers made by companies such as Cisco Systems, Juniper Networks, Alcatel Lucent, IBM, and Hewlett-Packard. Such telecom switches are very sophisticated, operating at very-high bandwidths and providing advanced routing functionality as well as supporting different Quality of Service (QoS) levels. Private networks, such as Local area networks (LANs), are most commonly used by businesses and home users. While LANs may employ equipment with some advanced functionality, such as managed switches, such equipment is usually fairly simplistic in functionality.
Routing in small business and home networks is usually facilitated by one or two schemes. One of these schemes, common to most home networks, is to use hardware-based plug-and-play routers such as made by Linksys, D-Link, Netgear, Apple, etc. These routers may also provide dual functionality, such as serving as a wireless access point and/or switch. While there is some software functionality provided by today's home network routers, it is usually very limited. The other approach employs software-based routing that is implemented by a computer server with a corresponding server or network operating system. For example, Microsoft Windows Server products and Linux servers may be configured to support software-based routing. Compared to hardware routers, software routers usually do not provide the same level of latency and throughput performance for high demand traffic. However, a software router has certain advantages that makes it a desirable choice for small networks, e.g., low cost, flexibility to configure and re-configure, capability of multi-tasking, and optional support for more sophisticated functionality not available with small network hardware routers, such as security measures, firewalling, QoS, etc.
In recent years, technologies have been proposed to improve the performance of software routers, for example, Click and PacketShader. Click is a modular software architecture for building routers in a flexible way. Using Click architecture, a user can connect packet processing building blocks to build an efficient pipeline for packet routing. PacketShader is a new software router framework that utilizing the massively-parallel processing power of a Graphics Processing Unit (GPU) to address the central processing unit (CPU) bottleneck in the current software routers. However, even with these technologies, the payload memory copies, e.g., from the Network Interface Controller (NIC) input port to system memory, and from system memory to output port, are still a big portion of the total packet processing overhead. The overhead limits the performance and also increases energy consumption.